查看原文
其他

在Markdown中用mermaid语法绘制图表

大邓 大邓和他的Python 2022-07-09

Python数据挖掘与文本分析&Stata应用能力提升与实证前沿云特训~

Mermaid可以用文本方式绘制图表和流程图,相比Visio而言更加的轻量便捷,此外Markdown内部支持Mermaid语法,可以有效避免切换软件,让我们更加专注于内容本身。

mermaid官方文档

https://mermaid-js.github.io/mermaid/#/README


图表类型支持

  • 饼形图(Pie Chart)

  • 流程图(Flow Chart)

  • 时序图(Sequence Diagram)

  • 状态图(State Diagram)

  • 甘特图(Gantt Diagram)

  • 类图(class Diagram)

  • 等等


饼形图

饼形图是我们经常用到的图表,在mermaid中最简单,基本上一看就会

代码
```mermaid
    pie 
    title Pets adopted by volunteers
    "Dogs" : 386
    "Cats" : 85
    "Rats" : 15 
``


用到的关键词

关键词功能
pie定义饼形图
title标题

流程图

该流程图就是用下方的代码再markdown中实现的

```mermaid
graph RL;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
```

关键词解读

关键词功能
graph定义流程图
TD流程图方向。mermai的方位还有T、D、L、 R,分别代表上、下、左、右。两个方位组合成一个流动方向。本案例是从上到下,即TD
-->有向箭头

节点还可以用:::调用修饰函数,如下


```mermaid
graph LR
    A:::someclass --> B
    classDef someclass fill:#f96;
```


时序图

时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序. 顺序图稍微复杂了一丢丢,代码如下

```mermaid
sequenceDiagram
    participant Alice
    participant Bob
    participant John
    
    Alice->>John: Hello John, how are you?
    
    loop Healthcheck
        John->>John: Fight against hypochondria
    end
    
    Note right of John: Rational thoughts <br/>prevail!
    John-->>Alice: Great!
    John->>Bob: How about you?
    Bob-->>John: Jolly good!
```

用到的关键词

关键词功能
sequenceDiagram定义顺序表
participant定义图中的节点
loop 、end循环体代码块,以loop开头,end结束;
Note提示框
right of方位关键词
->>实线箭头连接线
-->>虚线箭头

状态图

通过建立对象的生存周期模型来描述对象随时间变化的动态行为

代码

```mermaid
stateDiagram 
    Start --> First
    First --> Second
    First --> Third
    Second --> End
    Third --> End

    state First {
        [*] --> fir
        fir --> [*]
    }
    state Second {
        [*] --> sec
        sec --> [*]
    }
    state Third {}
```

代码关键词解读

关键词功能
stateDiagram用于定义状态图
[*]实心黑点
-->有向实线
state用于定义状态

我们可以看到状态state还可以定义内部的流程,如First和Second;Third没有定义内部处理过程。

甘特图

代码如下

```mermaid
gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2               :         des4, after des3, 5d
```

用到的关键词

关键词功能
gantt定义甘特图
dataFormat定义日期格式
title标题
excludes排除项目周期中的放假休息等日期
section定义一个项目
:done  、 :active:项目中的状态
after紧随其后


class类图

面向对象的编程会经常看到类,类与类有所属关系。比如中国人是人类的一员,而人类又隶属于灵长类动物。

代码

```mermaid
classDiagram
      Animal <|-- Duck
      Animal <|-- Fish
      Animal <|-- Zebra
      Animal : int age
      Animal : String gender
      Animal: isMammal()
      Animal: mate()
      class Duck{
          String beakColor
          swim()
          quack()
      }
      class Fish{
          int sizeInFeet
          canEat()
      }
      class Zebra{
          bool is_wild
          run()
          eat()
      }
```

用到的关键词

关键词功能
classDiagram定义类图
<|--隶属于某类
Animal : int age定义Animal的年龄属性(属性没有用括号)
Animal: isMammal()定义Animal的是否为哺乳动物方法(方法有括号)
class Duck定义Duck类

大家如果熟悉Python,就能理解类的属性和方法区别就是是否有括号。

往期文章

读完本文你就了解什么是文本分析
综述:文本分析在市场营销研究中的应用
从记者的Twitter关注看他们稿件的党派倾向?
Pandas时间序列数据操作
70G上市公司定期报告数据集
文本数据清洗之正则表达式
Python网络爬虫与文本数据分析
shreport库: 批量下载上海证券交易所上市公司年报
Numpy和Pandas性能改善的方法和技巧
漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存